home *** CD-ROM | disk | FTP | other *** search
- Subject: v24i043: Email fax-sending package, Part05/05
- Newsgroups: comp.sources.unix
- Approved: rsalz@uunet.UU.NET
- X-Checksum-Snefru: 2a7a2215 e0e33eb1 bc674b5a ad46bc6c
-
- Submitted-by: klaus u schallhorn <cnix!klaus>
- Posting-number: Volume 24, Issue 43
- Archive-name: faxpax/part05
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then feed it
- # into a shell via "sh file" or similar. To overwrite existing files,
- # type "sh file -c".
- # The tool that generated this appeared in the comp.sources.unix newsgroup;
- # send mail to comp-sources-unix@uunet.uu.net if you want that tool.
- # Contents: Howto.Install faxhost/faxfonts/diy_codep861.def
- # faxhost/faxfonts/diy_ibmpc.def faxhost/faxfonts/diy_iso.def
- # faxhost/faxlog.c faxhost/texttopbm.c sample.dot.faxrc
- # Wrapped by rsalz@litchi.bbn.com on Wed Mar 13 14:08:04 1991
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- echo If this archive is complete, you will see the following message:
- echo ' "shar: End of archive 5 (of 5)."'
- if test -f 'Howto.Install' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'Howto.Install'\"
- else
- echo shar: Extracting \"'Howto.Install'\" \(3828 characters\)
- sed "s/^X//" >'Howto.Install' <<'END_OF_FILE'
- XThis is faxpak - the "how to do" bit.
- X
- XYou need all the bits and pieces that come with it. You also need
- XJef Poskanzer's pbmplus kit. If you have it installed on your system,
- Xyou need to replace pbmtog3.c with the version that is included
- Xin faxpak [there's only eol and eop differences fired up by a new
- X"-sierra" option]. If you don't have pbmplus, it's been posted to
- Xcomp.sources.misc/vol9. I understand, Jef is currently [Feb '91]
- Xin the process of preparing an updated pbmplus kit for posting.
- XIf you can't findt pbmplus locally, try varies archive servers [ic and
- Xukc are good places in the uk]. If all else fails, try mailing
- Xjef@well.sf.ca.us.
- X
- X
- XUsing sierra type fax modems I found pbmtog3 too close to the standard
- X- sierra type faxmodems are not, and fail therefore on page confirmation
- Xor multipage faxes to SOME fax machines on SOME g3 files. The brute force
- Xfix I made overcomes this. It's ugly too.
- X
- XRead readme. Run FaxConfig, to get faxconfig.h, FAXLIB/fax.config
- Xand some other bits and pieces.
- X
- XIf you're on a sun, make. If there's no smoke [there shouldn't be],
- Xmake install
- Xelse
- X{
- X If you're running some other system, you have to know how to
- X get hardware flow control [termio(4) is a good place to start].
- X If you don't have hardware flow ctl, you might try xon/xoff.
- X I couldn't get it to work on a sun [don't tell me how it *should*
- X be done, unless you get it to work in practice with a sierra
- X type modem [it likes to hang up on me when I use xon/xoff]].
- X I know how to drive printers and plotters with xon/xoff. At
- X least they don't drop the phone line.
- X
- X Until you've sorted out flow ctl, use wiring.c as a stand alone
- X [and boy, you will feel alone] program. There's enough comments
- X to guide you to insanity.
- X}
- XOnce you you have wiring.c working [flow ctl problem sorted out],
- Xyou have to have another look at faxconfig.h, FAXLIB/fax.config.
- X
- XYou also have to decide, who can and who cannot. Set up some files
- Xfax.allow or fax.deny in FAXLIB, specifying either who is allowed
- Xto fax, or who should be prevented from doing so [the logic, I think,
- Xis the same used by cron].
- X
- XIn fax.config you also can enter dialing codes vs timezones. See
- Xexamples in FAXLIB/fax.config, if you want to send long distance
- Xfaxes at cheap rates only.
- X
- XDon't forget to put a binary of "fax" on each server. You need one
- Xfor each architecture supported. Keep a spare handy for those
- Xemergencies.
- X
- XThen add a line to cron specifying when sendfax is to doodle. I
- Xhave it running once an hour from 1pm to 5pm, and twice an hour
- Xafter that till 6am. Enter another line for faxcleanup. This is
- Xa wire brush to free your disk of those faxes that absolutely won't
- Xgo. I also made an entry in /usr/bin-I-think/newsyslog, to start
- Xa new log file each week. I keep logs 4 weeks. If you set loglevel
- X[in FAXLIB/fax.config] to 9, these logs are huge.
- X
- XOn our spooler FAXLIB is owned by root, spool.fax runs suid and
- Xsgid root. The rest in FAXLIB is read/writeable by root only.
- X
- XThere are some stubs in various places for things I'm considering
- Xor planning for release 1.0. There commented out or undef'ed.
- XIgnore these for the time being.
- X
- XIf you get it to work on a non sun, please let me have the diffs or
- Xthe modifications. If you make a diykit.def file for a charset not
- Xcatered for in faxhost/faxfonts, please let me have a copy of that
- Xtoo.
- X
- XThis is, as specified in various places, only version 0.99. After
- Xgetting it to work at all, I will now shift the focus of attention
- Xto producing output that is pretty [I'm doing this in my spare time,
- Xso don't hold you breath].
- X
- XHave fun
- X
- Xklaus schallhorn, klaus@cnix.uucp
- X
- XYou can always mail me for the things I forgot. There are bound to be
- Xsome. You can do what you want with faxpak, except trying to sell
- Xit. Don't make me start a price war. You're bound to lose.
- END_OF_FILE
- if test 3828 -ne `wc -c <'Howto.Install'`; then
- echo shar: \"'Howto.Install'\" unpacked with wrong size!
- fi
- # end of 'Howto.Install'
- fi
- if test -f 'faxhost/faxfonts/diy_codep861.def' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'faxhost/faxfonts/diy_codep861.def'\"
- else
- echo shar: Extracting \"'faxhost/faxfonts/diy_codep861.def'\" \(1489 characters\)
- sed "s/^X//" >'faxhost/faxfonts/diy_codep861.def' <<'END_OF_FILE'
- X# char set layout ibm code page 861
- X#
- X# note: this set does not contain
- X# the full ibm pc char set. If I'm not mistaken
- X# only the pretty patterns are missing, though.
- X# chars defined in iso, but not implemented on ibm pc hardware
- X# have not been done.
- X#
- X# position in textfax{h,l}.font [decimal]
- X# defined name in diykit.h
- X# attempt at char description
- X128 Ccidilla # C cidilla
- X129 uumlaut # u umlaut
- X130 eac # e'
- X131 acirc # a^
- X132 aumlaut # a umlaut
- X133 agr # a`
- X134 adot # a dot
- X135 ccidilla # c cidilla
- X136 ecirc # e^
- X137 eumlaut # e umlaut
- X138 egr # e`
- X139 Eth # -D
- X140 eth # small icelandic eth
- X141 thorn # thorn
- X142 Aumlaut # A umlaut
- X143 Aring # A with ring above
- X144 Eac # E'
- X145 ae # ae
- X146 AE # AE
- X147 ocirc # o^
- X148 oumlaut # o umlaut
- X149 Thorn # cap. icelandic thorn
- X150 ucirc # u^
- X### 151 ################ not defined in iso
- X152 yac # y'
- X152 yumlaut # y umlaut
- X153 Oumlaut # O umlaut
- X154 Uumlaut # U umlaut
- X155 cent # cent sign
- X156 pound # pound sign
- X157 yen # yen sign
- X158 ptpc # Pt as in ibmpc
- X159 fpc # f as in ibmpc
- X160 aac # a'
- X161 iac # i'
- X162 oac # o'
- X163 uac # u'
- X164 Aac # A'
- X165 Iac # I'
- X166 Oac # O'
- X167 Uac # U'
- X168 invqu # inverted ?
- X### 169
- X170 not # not sign,
- X171 half # 1/2
- X172 quarter # 1/4
- X173 invexcl # inverted !
- X174 angledleft # <<
- X175 angledrite # >>
- X#
- X225 germss # small german letter sharp 's'
- X#
- X#
- X241 plusminus # +-
- X#
- X246 div # division sign
- X#
- X249 middot # middle dot,
- X#
- X253 sup2 # superscript 2
- X#
- END_OF_FILE
- if test 1489 -ne `wc -c <'faxhost/faxfonts/diy_codep861.def'`; then
- echo shar: \"'faxhost/faxfonts/diy_codep861.def'\" unpacked with wrong size!
- fi
- # end of 'faxhost/faxfonts/diy_codep861.def'
- fi
- if test -f 'faxhost/faxfonts/diy_ibmpc.def' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'faxhost/faxfonts/diy_ibmpc.def'\"
- else
- echo shar: Extracting \"'faxhost/faxfonts/diy_ibmpc.def'\" \(1494 characters\)
- sed "s/^X//" >'faxhost/faxfonts/diy_ibmpc.def' <<'END_OF_FILE'
- X# char set layout ibm pc type
- X#
- X# note: this set does not contain
- X# the full ibm pc char set. If I'm not mistaken
- X# only the pretty patterns are missing, though.
- X# chars defined in iso, but not implemented on ibm pc hardware
- X# have not been done.
- X#
- X# position in textfax{h,l}.font [decimal]
- X# defined name in diykit.h
- X# attempt at char description
- X128 Ccidilla # C cidilla
- X129 uumlaut # u umlaut
- X130 eac # e'
- X131 acirc # a^
- X132 aumlaut # a umlaut
- X133 agr # a`
- X134 adot # a dot
- X135 ccidilla # c cidilla
- X136 ecirc # e^
- X137 eumlaut # e umlaut
- X138 egr # e`
- X139 iumlaut # i umlaut
- X140 icirc # i^
- X141 igr # i`
- X142 Aumlaut # A umlaut
- X143 Aring # A with ring above
- X144 Eac # E'
- X145 ae # ae
- X146 AE # AE
- X147 ocirc # o^
- X148 oumlaut # o umlaut
- X149 ogr # o`
- X150 ucirc # u^
- X151 ugr # u`
- X152 yumlaut # y umlaut
- X153 Oumlaut # O umlaut
- X154 Uumlaut # U umlaut
- X155 cent # cent sign
- X156 pound # pound sign
- X157 yen # yen sign
- X158 ptpc # Pt as in ibmpc
- X159 fpc # f as in ibmpc
- X160 aac # a'
- X161 iac # i'
- X162 oac # o'
- X163 uac # u'
- X164 ntilde # n~
- X165 Ntilde # N~
- X166 femordind # fem. ordinal ind., a_
- X167 mascordind # masc. ordinal ind., a_
- X168 invqu # inverted ?
- X#
- X170 not # not sign,
- X171 half # 1/2
- X172 quarter # 1/4
- X173 invexcl # inverted !
- X174 angledleft # <<
- X175 angledrite # >>
- X#
- X225 germss # small german letter sharp 's'
- X#
- X227 pilcrow # pilcrow, us paragraph
- X#
- X241 plusminus # +-
- X#
- X246 div # division sign
- X#
- X249 middot # middle dot,
- X#
- X253 sup2 # superscript 2
- END_OF_FILE
- if test 1494 -ne `wc -c <'faxhost/faxfonts/diy_ibmpc.def'`; then
- echo shar: \"'faxhost/faxfonts/diy_ibmpc.def'\" unpacked with wrong size!
- fi
- # end of 'faxhost/faxfonts/diy_ibmpc.def'
- fi
- if test -f 'faxhost/faxfonts/diy_iso.def' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'faxhost/faxfonts/diy_iso.def'\"
- else
- echo shar: Extracting \"'faxhost/faxfonts/diy_iso.def'\" \(2151 characters\)
- sed "s/^X//" >'faxhost/faxfonts/diy_iso.def' <<'END_OF_FILE'
- X# char set layout iso 8859/1
- X#
- X# position in textfax{h,l}.font [decimal]
- X# defined name in diykit.h
- X# attempt at character description
- X161 invexcl # inverted !
- X162 cent # cent sign
- X163 pound # pound sign
- X164 currency # currency sign
- X165 yen # yen sign
- X166 brokenbar # broken bar
- X167 paragraph # paragraph sign
- X168 diaeresis # diaeresis
- X169 copyrite # copyright sign
- X170 femordind # fem. ordinal ind., a_
- X171 angledleft # <<
- X172 not # not sign,
- X173 softhyphen # soft hyphen, same as dash
- X174 tm # registered trade mark
- X175 macron # macron, high -
- X176 degree # degree sign
- X177 plusminus # +-
- X178 sup2 # superscript 2
- X179 sup3 # superscript 3
- X180 accacute # accent acute'
- X181 micro # micro sign
- X182 pilcrow # pilcrow, us paragraph
- X183 middot # middle dot,
- X184 cidilla # cidilla,
- X185 sup1 # superscript 1
- X186 mascordind # masc. ordinal ind., a_
- X187 angledrite # >>
- X188 quarter # 1/4
- X189 half # 1/2
- X190 threequarts # 3/4
- X191 invqu # inverted ?
- X192 Agr # A`
- X193 Aac # A'
- X194 Acirc # A^
- X195 Atilde # A~
- X196 Aumlaut # A umlaut
- X197 Aring # A with ring above
- X198 AE # AE
- X199 Ccidilla # C cidilla
- X200 Egr # E`
- X201 Eac # E'
- X202 Ecirc # E^
- X203 Eumlaut # E umlaut
- X204 Igr # I`
- X205 Iac # I'
- X206 Icirc # I^
- X207 Iumlaut # I umlaut
- X208 Eth # -D
- X209 Ntilde # N~
- X210 Ogr # O`
- X211 Oac # O'
- X212 Ocirc # O^
- X213 Otilde # O~
- X214 Oumlaut # O umlaut
- X215 multipl # multiplication
- X216 ooblique # O/
- X217 Ugr # U`
- X218 Uac # U'
- X219 Ucirc # U^
- X220 Uumlaut # U umlaut
- X221 Yac # Y'
- X222 Thorn # cap. icelandic thorn
- X223 germss # small german letter sharp 's'
- X224 agr # a`
- X225 aac # a'
- X226 acirc # a^
- X227 atidle # a~
- X228 aumlaut # a umlaut
- X229 adot # a dot
- X230 ae # ae
- X231 ccidilla # c cidilla
- X232 egr # e`
- X233 eac # e'
- X234 ecirc # e^
- X235 eumlaut # e umlaut
- X236 igr # i`
- X237 iac # i'
- X238 icirc # i^
- X239 iumlaut # i umlaut
- X240 eth # small icelandic eth
- X241 ntilde # n~
- X242 ogr # o`
- X243 oac # o'
- X244 ocirc # o^
- X245 otilde # o~
- X246 oumlaut # o umlaut
- X247 div # division sign
- X248 ooblique # o/
- X249 ugr # u`
- X250 uac # u'
- X251 ucirc # u^
- X252 uumlaut # u umlaut
- X253 yac # y'
- X254 thorn # thorn
- X255 yumlaut # y umlaut
- END_OF_FILE
- if test 2151 -ne `wc -c <'faxhost/faxfonts/diy_iso.def'`; then
- echo shar: \"'faxhost/faxfonts/diy_iso.def'\" unpacked with wrong size!
- fi
- # end of 'faxhost/faxfonts/diy_iso.def'
- fi
- if test -f 'faxhost/faxlog.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'faxhost/faxlog.c'\"
- else
- echo shar: Extracting \"'faxhost/faxlog.c'\" \(3865 characters\)
- sed "s/^X//" >'faxhost/faxlog.c' <<'END_OF_FILE'
- X#include <stdio.h>
- X#include <fcntl.h>
- X#include <varargs.h>
- X#include <errno.h>
- X#include <time.h>
- X
- X#include "../faxconfig.h"
- X
- X/*
- X logging and locking for faxpak
- X
- X first released version 0.99 [desperado version]
- X cleaned up Jan 22nd '91,
- X Copyright (C) 1991, klaus schallhorn, klaus@cnix.uucp
- X
- X Permission to use, copy, modify, and distribute this software
- X and its documentation for any purpose and without fee is hereby
- X granted, provided that the above copyright notice appear in
- X all copies and that both that copyright notice and this permission
- X notice appear in supporting documentation.
- X
- X This software is provided "as is" without express or implied warranty.
- X*/
- X
- Xchar lckname[256], logname[256];
- Xextern int errno;
- Xextern int blah;
- X
- X/*
- X enter something in faxlog file, lock it to have exclusive
- X access while we're writing
- X unlock when done
- X*/
- X
- Xfax_log(va_alist)
- Xva_dcl
- X{
- X va_list args;
- X char *fmt;
- X int db_flag;
- X FILE *fp;
- X
- X va_start(args);
- X db_flag = va_arg(args, int);
- X fmt = va_arg(args, char *);
- X
- X if (db_flag == ERROR || (blah >= db_flag))
- X {
- X sprintf(lckname, "%s/FAX.LOG.LOCK", FAXLIB);
- X sprintf(logname, "%s/FAX.LOG", FAXLIB);
- X
- X if (mklock(lckname, 3, 15))
- X return(ERROR);
- X
- X if ((fp = fopen(logname, "a")) != NULL)
- X {
- X chmod(logname, FAXFMODE);
- X timestamp(fp,(time_t)0L);
- X if (db_flag == ERROR)
- X fprintf(fp,"[%05d] %2d ",getpid(),errno);
- X else fprintf(fp,"[%05d] ",getpid());
- X vfprintf(fp, fmt, args);
- X }
- X
- X fclose(fp);
- X unlink(lckname);
- X }
- X va_end(args);
- X return(0);
- X}
- X
- X/*
- X same as fax_log, except we use an applications specific
- X log file during transmission of fax as to not encounter
- X any delays for waiting for a lock [we're on the phone now!].
- X
- X fflushlog moves the contents of this temp file to the real
- X log file after hangup
- X*/
- Xfax_tlog(va_alist)
- Xva_dcl
- X{
- X va_list args;
- X int db_flag;
- X FILE *fp;
- X char *fmt;
- X
- X va_start(args);
- X
- X db_flag = va_arg(args, int);
- X fp = va_arg(args, FILE *);
- X fmt = va_arg(args, char *);
- X
- X if (fp && (db_flag == ERROR || (blah >= db_flag)))
- X {
- X timestamp(fp,(time_t)0L);
- X if (db_flag == ERROR)
- X fprintf(fp,"[%05d] %2d ",getpid(),errno);
- X else fprintf(fp,"[%05d] ",getpid());
- X vfprintf(fp, fmt, args);
- X }
- X va_end(args);
- X return(0);
- X}
- Xfflushlog(tlogname)
- Xchar *tlogname;
- X{
- X FILE *in, *out;
- X char buf[256];
- X
- X sprintf(lckname, "%s/FAX.LOG.LOCK", FAXLIB);
- X sprintf(logname, "%s/FAX.LOG", FAXLIB);
- X
- X if (mklock(lckname, 4, 60)) /* wait up to a minute */
- X return(ERROR);
- X
- X if (((out = fopen(logname, "a")) != NULL)
- X && ((in = fopen(tlogname, "r")) != NULL))
- X {
- X while (fgets(buf, 248, in) != NULL)
- X if (fputs(buf, out) == EOF)
- X return(ERROR);
- X fflush(out);
- X if (ferror(in) || ferror(out))
- X return(ERROR);
- X fclose(in); /* if we have errors on one of these */
- X fclose(out); /* it's likely that fax_log will produce */
- X /* errors as well, simply reboot ;-) */
- X if (!unlink(lckname))
- X return(0);
- X }
- X return(ERROR);
- X}
- X
- Xmklock(lockname,nap,max_secs)
- Xchar *lockname;
- Xint nap,max_secs;
- X{
- X int i,l;
- X
- X i=0; /* wait till logfile is avail */
- X while ((l = open(lockname, O_WRONLY | O_CREAT | O_EXCL, 0666)) == ERROR
- X && errno == EEXIST)
- X {
- X if ((!max_secs) || (max_secs && (i == max_secs)))
- X return(ERROR);
- X sleep(nap);
- X i += nap;
- X }
- X if (l > ERROR)
- X {
- X close(l);
- X return(0);
- X }
- X return(ERROR);
- X}
- X
- Xtimestamp(fp,alt)
- XFILE *fp;
- Xtime_t alt;
- X{
- X time_t t;
- X struct tm *tml, *localtime();
- X
- X if (alt)
- X t = alt;
- X else time(&t);
- X tml = localtime(&t);
- X ++tml->tm_mon; /* jan is 0 */
- X
- X fprintf(fp,"%02d.%02d.%2d %02d:%02d:%02d ",
- X tml->tm_mday,tml->tm_mon,tml->tm_year,
- X tml->tm_hour,tml->tm_min,tml->tm_sec);
- X}
- X
- X/*
- X mainly used in spool.fax [I think], used to inform
- X a user of his bad fortune
- X*/
- Xmailexit(s)
- Xchar *s;
- X{
- X char buf[256];
- X
- X if (*s)
- X {
- X sprintf(buf,"echo \"spool.fax, pid %05d: error while spooling\" | mail %s",
- X getpid(),s);
- X system(buf);
- X }
- X exit(1);
- X}
- END_OF_FILE
- if test 3865 -ne `wc -c <'faxhost/faxlog.c'`; then
- echo shar: \"'faxhost/faxlog.c'\" unpacked with wrong size!
- fi
- # end of 'faxhost/faxlog.c'
- fi
- if test -f 'faxhost/texttopbm.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'faxhost/texttopbm.c'\"
- else
- echo shar: Extracting \"'faxhost/texttopbm.c'\" \(3379 characters\)
- sed "s/^X//" >'faxhost/texttopbm.c' <<'END_OF_FILE'
- X#include <stdio.h>
- X#include <ctype.h>
- X#include "../faxconfig.h"
- X
- X/*
- X texttopbm.c
- X
- X crude frontent to fntwrite
- X
- X first released version 0.99 [desperado version]
- X cleaned up Jan 28nd '91,
- X Copyright (C) 1991, klaus schallhorn, klaus@cnix.uucp
- X
- X Permission to use, copy, modify, and distribute this software
- X and its documentation for any purpose and without fee is hereby
- X granted, provided that the above copyright notice appear in
- X all copies and that both that copyright notice and this permission
- X notice appear in supporting documentation.
- X
- X This software is provided "as is" without express or implied warranty.
- X*/
- X
- Xint fax_mode=COARSE;
- Xchar TEXTFONT[256], outname[256], tname[256];
- Xunsigned char inbuf[1024];
- Xchar *strrchr();
- Xchar *PGM;
- XFILE *outfp;
- Xextern int font_type;
- X
- Xmain(argc,argv)
- Xint argc;
- Xchar *argv[];
- X{
- X FILE *fp = NULL;
- X int i, x, y;
- X
- X if ((PGM = strrchr(argv[0], '/')) != NULL)
- X ++PGM;
- X else PGM = argv[0];
- X
- X
- X outname[0] = TEXTFONT[0] = '\0';
- X for (i=1; i<argc; i++)
- X {
- X if (!strncmp(argv[i], "-h", 2))
- X fax_mode = FINE;
- X else if (!strncmp(argv[i], "-f", 2))
- X {
- X if (argv[i][2] == '/')
- X strcpy(TEXTFONT, &argv[i][2]);
- X else sprintf(TEXTFONT, "%s/%s", FAXLIB, &argv[i][2]);
- X }
- X else if (!strncmp(argv[i], "-i", 2))
- X {
- X if ((fp = fopen(&argv[i][2], "r")) == NULL)
- X {
- X fprintf(stderr,"%s: can't open %s\n",PGM,&argv[i][2]);
- X exit(1);
- X }
- X }
- X else if (!strncmp(argv[i], "-o", 2))
- X strcpy(outname, &argv[i][2]);
- X }
- X
- X if (!TEXTFONT[0])
- X {
- X if (fax_mode == FINE)
- X sprintf(TEXTFONT, "%s/%s", FAXLIB, FAXHFONT);
- X else sprintf(TEXTFONT, "%s/%s", FAXLIB, FAXLFONT);
- X }
- X
- X if (fp == NULL)
- X {
- X if (isatty(fileno(stdin)))
- X {
- X fprintf(stderr,"%s [-high_res -ffont -ifile -ofile]\n",PGM);
- X exit(2);
- X }
- X fp = stdin;
- X }
- X
- X if ((!outname[0]) && isatty(fileno(stdout)))
- X {
- X fprintf(stderr,"%s: need -ofile or redirection\n",PGM);
- X exit(2);
- X }
- X
- X if (font_init(TEXTFONT))
- X exit(3);
- X
- X if (font_type == HP)
- X {
- X x = 2800;
- X y = 3600;
- X }
- X else if (font_type == FINE)
- X {
- X x = 1800;
- X y = 2200;
- X }
- X else
- X {
- X x = 1800;
- X y = 1100;
- X }
- X /* 9 by 12 inches, big enough for A4 */
- X if (mk_bm(x,y)) /* if we're using a 300 dpi bitmap */
- X exit(4); /* allows me to use any hp ljet font <= 30 pts */
- X /* maybe even larger, but haven't tested that */
- X exit(texttopbm(fp));
- X}
- Xtexttopbm(fp)
- XFILE *fp;
- X{
- X int line, page, line_inc, line_max;
- X
- X switch(font_type)
- X {
- X case HP: line = line_inc = 50; line_max = 3250; break;
- X case COARSE: line = line_inc = 16; line_max = 1040; break;
- X case FINE: line = line_inc = 34; line_max = 2080; break;
- X }
- X
- X page = 0;
- X
- X if (outname[0])
- X {
- X sprintf(tname,"%s.%d",outname,page);
- X if ((outfp = fopen(tname, "w")) == NULL)
- X {
- X fprintf(stderr,"%s: can't create %s",PGM,tname);
- X return(ERROR);
- X }
- X chmod(tname, FAXFMODE);
- X } else outfp = stdout;
- X
- X for (;;)
- X {
- X if (fgets(inbuf, 256, fp) == NULL)
- X line = 9999; /* first write out bitmap */
- X else printstr(inbuf,line);
- X /* 300 dpi / (6 lines per inch) = 50 dots */
- X if ((line += line_inc) > line_max)
- X {
- X if (end_bm())
- X return(ERROR);
- X fclose(outfp);
- X
- X if ((line > 9999) || (!outname[0])) /*done */
- X return(0);
- X
- X sprintf(tname,"%s.%d",outname,++page);
- X if ((outfp = fopen(tname, "w")) == NULL)
- X {
- X fprintf(stderr,"%s: can't create %s",PGM,tname);
- X return(ERROR);
- X }
- X chmod(tname, FAXFMODE);
- X line = line_inc;
- X }
- X }
- X}
- END_OF_FILE
- if test 3379 -ne `wc -c <'faxhost/texttopbm.c'`; then
- echo shar: \"'faxhost/texttopbm.c'\" unpacked with wrong size!
- fi
- # end of 'faxhost/texttopbm.c'
- fi
- if test -f 'sample.dot.faxrc' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'sample.dot.faxrc'\"
- else
- echo shar: Extracting \"'sample.dot.faxrc'\" \(168 characters\)
- sed "s/^X//" >'sample.dot.faxrc' <<'END_OF_FILE'
- X# sample .faxrc
- X# no $HOME should be without one
- X#
- Xresolution low
- Xmail true
- Xnow false
- Xsave true
- Xretfax (000) 123 4567 [this is my mother in law, don't use at day time]
- END_OF_FILE
- if test 168 -ne `wc -c <'sample.dot.faxrc'`; then
- echo shar: \"'sample.dot.faxrc'\" unpacked with wrong size!
- fi
- # end of 'sample.dot.faxrc'
- fi
- echo shar: End of archive 5 \(of 5\).
- cp /dev/null ark5isdone
- MISSING=""
- for I in 1 2 3 4 5 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 5 archives.
- rm -f ark[1-9]isdone
- else
- echo You still must unpack the following archives:
- echo " " ${MISSING}
- fi
- exit 0
- exit 0 # Just in case...
-